Data storage systems are arrangements of hardware and software that include one or more storage processors coupled to arrays of non-volatile storage devices, such as magnetic disk drives, electronic flash drives, and/or optical drives, for example. The storage processors service storage requests, arriving from host machines (“hosts”), which specify files or other data elements to be written, read, created, or deleted, for example. Software running on the storage processors manages incoming storage requests and performs various data processing tasks to organize and secure the data elements stored on the non-volatile storage devices.
Some data storage systems employ transaction logs for temporarily storing changes in data of data objects served by the data storage systems. For example, a data storage system serving a data object may receive a request from a host machine to perform a write operation on that data object. In response to receiving the request, the data storage system temporarily stores the data specified in the request as a log entry in a transaction log. Once the transaction log has stored the transaction, the data storage system can acknowledge back to the host that the operation specified in the request has been completed. Subsequently, the data storage system can synchronize the data stored in the transaction log to the data object. The data storage system can then retire the transaction from the log, e.g., to make room for new transactions.
A transaction log may be arranged as a circular buffer with a head and a tail, with new log entries placed at the tail of the log, and older log entries flushed from the head.